Neetcode 150 將 Leetcode 上的 150 個問題分為 18 個主題,我們先從最基礎的 Arrays & Hashing 開始。
問題描述:找出 Array 中是否有重複的數字。這是一個基本的問題,常見於許多面試中。
解法:一個簡單而有效的解法是使用集合 (Set)。我們可以依次檢查每個數字,並將它們加入一個已經見過的集合 S 中。如果當前的數字已經存在於 S 中,那麼我們可以確定數字是重複的。
解答示例:
class Solution(object):
def containsDuplicate(self, nums):
hset = set()
for idx in nums:
if idx in hset:
return True
else:
hset.add(idx)
return False
解答作者:PratikSen07
對於集合,除了可以一個一個加入,也可以直接對列表建立集合,這樣可以得到一個更簡潔的解法:
def containsDuplicate(nums):
return len(nums) != len(set(nums))
解答作者:lifeisshort
這個方法的思路是:如果原始列表的長度與其轉換為集合後的長度不同,則表示有重複的數字。這樣的解法簡單且高效,利用了集合的唯一性特徵。
接下來,我們將繼續探索 Neetcode 150 中的其他問題,幫助大家更好地準備 coding 面試。
系列文章
[Day 1] 刷題從 Neetcode 網站開始
[Day 2] 善用 Python 基本資料結構:集合 Set
[Day 3] 善用 Python 基本資料結構:dictionary